home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DDJMAG / DDJ9310.ZIP / DFPP03.ZIP / MENUSEL.H < prev    next >
C/C++ Source or Header  |  1993-09-23  |  2KB  |  81 lines

  1. // ------- menusel.h
  2.  
  3. #ifndef MENUSEL_H
  4. #define MENUSEL_H
  5.  
  6. #include <stdio.h>
  7. #include "strings.h"
  8. #include "dfwindow.h"
  9.  
  10. enum MenuType {
  11.     NORMAL,
  12.     TOGGLE,
  13.     CASCADER,
  14.     SEPARATOR
  15. };
  16.  
  17. enum Toggle { Off, On };
  18.  
  19. class DFWindow;
  20. class PopDown;
  21.  
  22. class MenuSelection    {
  23.     String *label;          // selection label
  24.     void (Application::*cmdfunction)(); // selection function
  25.     MenuType type;          // NORMAL, TOGGLE,
  26.                             // CASCADER, SEPARATOR
  27.     Bool isenabled;         // True = enabled, False = disabled
  28.     int accelerator;        // accelerator key
  29.     PopDown *cascade;       // cascaded menu window
  30.     MenuSelection **cascaders; // cascaded menu selection list
  31.     Toggle toggle;          // On or Off
  32.     void NullSelection();   // Build a null selection
  33.     friend PopDown;
  34.     void CommonConstructor( const char *Label,
  35.                             int Accelerator,
  36.                             void (Application::*CmdFunction)(),
  37.                             Bool Active,
  38.                             MenuType Type,
  39.                             Toggle Tgl,
  40.                             MenuSelection **Cascaders = 0);
  41. public:
  42.     MenuSelection(  const char *Label, 
  43.                     void (Application::*CmdFunction)() = 0,
  44.                     int Accelerator=0,
  45.                     Bool Active=True );
  46.  
  47.     MenuSelection(  const char *Label,
  48.                     void (Application::*CmdFunction)(),
  49.                     Toggle Tgl,
  50.                     int Accelerator=0,
  51.                     Bool Active=True );
  52.  
  53.     MenuSelection(  const char *Label,
  54.                     MenuSelection **Cascaders,
  55.                     int Accelerator=0,
  56.                     Bool Active=True );
  57.  
  58.     MenuSelection(  const char *Label,
  59.                     Toggle Tgl,
  60.                     int Accelerator=0,
  61.                     Bool Active=True );
  62.  
  63.     MenuSelection(MenuType Type);
  64.  
  65.     Bool isEnabled()    { return isenabled; }
  66.     void Enable()       { isenabled = True; }
  67.     void Disable()      { isenabled = False; }
  68.     void SetToggle()    { toggle = On; }
  69.     void ClearToggle()  { toggle = Off; }
  70.     void InvertToggle() { toggle = toggle == On ? Off : On; }
  71.     Bool isToggled()    { return (Bool) (toggle == On); };
  72.     Type()              { return type; }
  73. };
  74.  
  75. extern MenuSelection SelectionSeparator;
  76. extern MenuSelection SelectionTerminator;
  77.  
  78. #endif
  79.  
  80.  
  81.